/*
 * Copyright 2011 University of Southern California
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/

package edu.isi.misd.image.gateway.conversion;

/**
 * Common interface for any implementation that can be considered a destination
 * for writing an image.
 * 
 * @author David Smith
 * 
 */
public interface ImageDestination {

    /**
     * 
     * @return the name of the file to write to
     */
    public String getFilename();

    /**
     * Writes bytes to the file
     * 
     * @param bytes
     *            the bytes to write
     * @throws Exception
     */
    public void writeBytes(byte[] bytes) throws Exception;

    /**
     * Writes the bytes to the file
     * 
     * @param bytes
     *            the image bytes
     * @param x
     *            the X offset
     * @param y
     *            the Y offset
     * @param width
     *            the width of the image bytes
     * @param height
     *            the height of the image bytes
     * @throws Exception
     */
    public void writeBytes(byte[] bytes, long x, long y, long width, long height)
    throws Exception;

    public void close() throws Exception;
}
